博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
estore商城案例(一)------用户注册&邮件激活(上)
阅读量:4327 次
发布时间:2019-06-06

本文共 4509 字,大约阅读时间需要 15 分钟。

学习javaweb时间不长,也是第一次发博客,有写的不好的地方请大家多多指出.最近,根据老师上课讲的和自己的想法最终是把estore这个网上商城小案例完成了,所以总结一下放到博客上,希望对像我一样的初学者有所帮助.好了,下面开始正题.

涉及到的功能:

1、注册&邮箱激活

2、登录&添加商品&商品列表

3、过滤器:自动登录&权限管理

4、添加购物车&购物车显示

5、生成订单&在线支付

一、注册&邮箱激活

先展示一下效果:

1、注册首页的用户名、邮箱、验证码都做了ajax提交到服务器去验证。

2、提交注册信息,激活邮件.哦哦,下面的页面没显示多少秒,待会再解决.

数据库中看到刚才注册的用户状态为0,还未激活

 

打开Foxmail接收邮件,点击激活,激活后数据库中的状态将变为1,然后跳转到登陆界面登陆.

二、数据库涉及到的表

1、users表:

create database estoresystem;use estoresystem;create user estore identified by 'estore';grant all on estoresystem.* to estore;CREATE TABLE users (  id int(11) NOT NULL AUTO_INCREMENT,  username varchar(100) NOT NULL,  password varchar(100) NOT NULL,  nickname varchar(100) DEFAULT NULL,  email varchar(100) NOT NULL,  state int(11) DEFAULT NULL,  role varchar(10) DEFAULT NULL,  activecode varchar(100) DEFAULT NULL,  registtime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (id))

  三、在myeclipse中创建工程,开始撸代码。

1、创建数据库连接,使用c3p0连接池,在utils包装创建JdbcUtils类,负责调用数据库资源。当然使用c3p0需要先在src下创建和配置c3p0的xml文件.

public class JdbcUtils {	private static DataSource dataSource = new ComboPooledDataSource();	public static Connection getConnection()	{		try {			 return dataSource.getConnection();		} catch (SQLException e) {						e.printStackTrace();		}		return null;	}	public static DataSource getDataSource()	{		return dataSource;	}

  

2、在domain包里创建users表的实体类User,以及操作users的dao。dao包下存放interface UserDao,dao.impl包下存放UserDao接口的实现类UserDaoImpl。

接口:

public interface UserDao {	//增删改	public abstract boolean executeUpate(String sql, Object... param);	public abstract boolean add(User u);	public abstract boolean deleteByActivecode(User u);	public abstract boolean updateState(User u);	//单查询	public abstract User queryUser(String key, String values);	public abstract User querUserByActivecode(User u);	public abstract User loginByUser(User u);}

  接口实现类

public class UserDaoImpl implements UserDao {    //增删改通用方法	@Override	public boolean executeUpate(String sql,Object...param)	{		QueryRunner runner=new QueryRunner(JdbcUtils.getDataSource());		int i=0;		try {			i=runner.update(sql, param);		} catch (SQLException e) {						e.printStackTrace();		}		return i>0?true:false;	}	//增	@Override	public boolean add(User u)	{	String sql="insert into users values(null,?,?,?,?,0,'user',?,null)";	Object[] param={u.getUsername(),MD5.getMD5(u.getPassword()),u.getNikename(),u.getEmail(),u.getActivecode()};	return executeUpate(sql, param);//使用的上面的增删改通用方法	}		//单查询通用方法				@Override		public User queryUser(String key,String values)		{			QueryRunner runner=new QueryRunner(JdbcUtils.getDataSource());			String sql="select * from users where "+key+"=?";			try {				return runner.query(sql, new BeanHandler
(User.class), values); } catch (SQLException e) { e.printStackTrace(); throw new MyRuntimeException(e); } } //根据激活码查询用户 @Override public User querUserByActivecode(User u) { return queryUser("activecode", u.getActivecode());//使用的上面的单查询通用方法 } //用户登录时使用 @Override public User loginByUser(User u) { QueryRunner runner=new QueryRunner(JdbcUtils.getDataSource()); String sql="select * from users where username=? and password=?"; try { return runner.query(sql, new BeanHandler
(User.class), u.getUsername(),u.getPassword()); } catch (SQLException e) { e.printStackTrace(); throw new MyRuntimeException(e); } }}

  四、下面开始写web层

1、注册页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>注册首页//这个js文件是ajax
用户注册

用户名
密码
重复密码
昵称
邮箱
验证码 验证码

  

function validate(key,values){	var xmlHttp=ajaxFunction();//这里是获取ajax对象的方法,我没写	xmlHttp.onreadystatechange=function()	{		if(xmlHttp.readyState==4&&xmlHttp.status==200)		{			var b=xmlHttp.responseText;			document.getElementById("hidden").value=b;//对于这里的问题是,我本来是想直接把responseText的值回传给主调函数的,但是始终无法获得,问题的原因还未知,待查证.最后我在form表单中添加了一个hidden标签,把responseText的值传给hidden的value,然后主调函数直接调用hidden的value就可以了		}	}	xmlHttp.open("get","/myestore/regist?"+key+"="+values,false);	xmlHttp.send(null);}

  明天继续......

转载于:https://www.cnblogs.com/cmds/p/3900331.html

你可能感兴趣的文章
搭建Sphinx环境及文档
查看>>
实验随笔
查看>>
Weapsy分析终
查看>>
8个免费实用的C++GUI库(转载)
查看>>
d010: 分离自然数
查看>>
软件工程的实践项目的自我目标
查看>>
Java8 in action(1) 通过行为参数化传递代码--lambda代替策略模式
查看>>
Django学习笔记(二)App创建之Model
查看>>
java将很长的一条sql语句,自动换行输出(修改版)2019-06-01(bug未修复)
查看>>
二维数组中的查找
查看>>
(转)2019JAVA面试题附答案(长期更新)
查看>>
UIButton中setTitleEdgeInsets和setImageEdgeInsets的使用
查看>>
python基础知识笔记(二) (出现语法以及颜色问题)
查看>>
部署docker
查看>>
状态码及其意义
查看>>
【bzoj 十连测】[noip2016十连测第五场]Problem C: travel(模拟)
查看>>
Exp9 WEB安全基础 20154326杨茜
查看>>
关于SQL5005C
查看>>
JQuery EasyUI之DataGrid列名和数据列分别设置不同对齐方式(转)
查看>>
JavaScript中的null与nudefined
查看>>